The ability of businesses to conduct transactions with customers (as well as with other businesses) over the Internet using “online storefronts” has enabled such businesses to greatly expand their potential customer base while substantially reducing costs related to maintaining “brick and mortar” businesses. However, such transactions, handled at a distance and not face-to-face, also present unique problems, for example with regards to how merchants make their products or services known to potential buyers.
A web browser (sometimes referred to as a client browser or a browser) is a client software application primarily used for requesting, receiving, rendering (i.e., presenting), and enabling user navigation of (i.e., the traversal of) website data from websites hosted by remote web servers. Although browsers are primarily intended to be used to navigate and present data contained on web-pages that are part of the World Wide Web, they can also be used to access information provided by web servers that are part of private networks or files residing in local file systems.
A website is typically constructed of a set of related data files called webpages along with other data files containing content (or a “link” to content), such as text, images, video, audio, etc. A website may be hosted on one or more web servers and may thereby be made accessible to remote client computers and applications. This is typically accomplished by using a web “address” known as a uniform resource locator (i.e., a URL, where all publicly accessible websites collectively constitute the “World Wide Web” or Internet). A webpage is a human-readable and computer-readable data file, typically containing text and links to other data files, such as image files. The data is intended to be displayed to a client-user in accordance with computer-readable formatting instructions that communicate to a client-application, such as a web browser, how to display the text and linked data files. Webpages may, for example, be described using (or written in) a “markup” language such as hypertext markup language (HTML) or extensible hypertext markup language (XHTML). Each webpage may contain one or more of text, images, a “button” to activate a recorded audio or video segment, etc. A linking or ordering of a website's webpages conveys a perceived structure of the website to an end user and guides the user's navigation of the website. Many websites include a homepage (or index page), which generally provides basic information about the website, links to the website's other webpages/content, as well as links to supplementary information (such as an “about” page, a “contact” page, and/or a “site map” page). Typically, at the direction of a user, a client application (such as a web browser) will access a webserver and request a particular page of a website (e.g., based on a URL or other form of identifying the location of a desired page). In response, the webserver will transmit the appropriate web page or set of related web pages and other data files to the client application and the application will render the webpage content according to its formatting instructions for display to a user.
Webpages may be static or dynamic, that is they may contain static and/or changeable (i.e., “active”) content. A website's static web pages (which may be some or all of the site's web pages) are stored on a web server in the format that is sent to the client web browser, and are commonly written in HTML. Simple forms, fixed examples of webpages/websites (such as might be used for marketing), and other fixed content are often in the form of static websites (i.e., they contain solely or predominantly static web pages), and they present pre-defined, static information to a user. This may include information about a company and its products and services that is provided through text, photos, animations, audio/video segments, and interactive menus and navigation tools. This type of website usually displays the same information to all visitors. Similar to the act of handing out a printed brochure to customers or clients, a static website will generally provide consistent, standard information for an extended period of time. Although the website owner may make updates periodically, it is a relatively simple process to edit the text, photos, and other content and may only require basic website design skills and software tools.
In contrast, a dynamic webpage (i.e., a web page that includes at least some active/dynamic content) displays content that may vary based on parameters provided by a client browser. This permits the web page to be “customized” in response to characteristics of the viewer (demographics, etc.), the viewer's location, the viewer's previous browsing behavior, etc. For example when a user accesses a website's “log-in” page, the user typically provides a user name and password, and activates a log-in “button”. In response to the “button” activation, the user's web browser transmits the user name and password to a URL linked to the “button.” In response, the web server hosting the website may, rather than deliver a predefined static file, instead execute a script that confirms the user name and password are a valid combination, followed by delivering content selected for that specific user. The user specific content may be selected based on data known about the user based on the current or a previous session, such as user location, the user's previous search histories, the user's “click-through” or purchasing behavior, the user's preferences, etc.
While web pages that include active/dynamic content are able to more accurately provide a user with targeted content, they do have some limitations. One disadvantage of using dynamic webpages/websites is that they are not easily indexed or are not indexable by search engines, because some or all of the content may not be generated until a request is received from a user. Search engines function by scanning and indexing the content of webpages at discreet intervals, and typically do not run executable scripts when they index a site. Dynamic webpages/websites, however, require such script execution to generate a complete version of the webpage or website. Therefore, such dynamic content (i.e., pages/sites) cannot be fully or completely indexed by search engines.
An additional disadvantage of using dynamic content as part of webpages/websites is the additional time it takes to generate a dynamic webpage the first time it is loaded by a given browser. This is because dynamic web sites must transmit more information back and forth over the network during script execution to ensure that the web page is correctly rendered for display to a user.
Unfortunately, conventional techniques for addressing these disadvantages of using dynamically generated content are not satisfactory and may create disincentives to using dynamic content in some situations. This is unfortunate as dynamic content provides benefits for both end-users and website owners. For example, one technique for allowing dynamically-generated websites to be searched is to use a server side technology to create a corresponding site on a server. The server generated site does not use the executable scripts, but instead produces the corresponding content in static form so it can be indexed by a search engine. When a request is received for a webpage, a server process may be used to decide to serve the page from either the dynamic site or from the static site based on the User-Agent HTTP header, which identifies whether the request is coming from a search engine or from an end user's browser. However, this approach requires two versions of the website to be built, maintained, and synchronized (so that changes to one version of the site can be duplicated on the other). In addition, some dynamic features, such as accessing product reviews from a third party site, may not be possible to produce accurately on the server version, as the third party sites typically also rely on dynamically generated content.
An alternative approach to dealing with the problems related to searching that are created by the use of dynamic content is to use a template framework that can be generated on a server as well as on a client. In such an approach, one or more templates that are used to create a site on the client side can also be used on the server. However, in order to do this, the server generated site typically utilizes a set of templates created with similar, but more limited functionality. This is because the server may not be able to process some of the “arbitrary” content that may be present in the set of templates used to generate the client side webpages/website that include the dynamic content. As a result, at least some of the web pages would be rendered using a template with reduced capabilities, since the server would be limited to simple template substitution.
This creates a problem for the website development process, as a site developer would need to maintain two copies of each template in parallel, one for the dynamic site and a second for the static site, and these could easily become unsynchronized. This would cause the static site to have contents that did not look identical to the dynamic site. Search engines penalize sites that appear different to the search engine than they appear to actual users (this is a process termed “cloaking”) and such an approach would therefore be rendered ineffective or at least undesirable. Further, as noted with regards to the approach of maintaining a second server-based website, many websites utilize additional third party content in webpages and that content may not use compatible templates, and thus cannot be generated on the server. In such a case, some or all of such content would not be indexable (and the differences between the website content might lead to a search engine assuming that “cloaking” was being practiced).
With regards to the loading of pages containing dynamic content, conventional approaches to optimizing the load time of dynamic content by a client browser are unsatisfactory because they typically address optimizing database and server access, and script execution. While beneficial, this approach has limited value, as it may not be scalable or extendible between different server environments and/or architectures. Similarly, conventional approaches to permitting a dynamically generated webpage/website to be fully indexable by a search engine and to be loaded relatively quickly by a client browser application have disadvantages related to accuracy, efficiency and the resources needed to implement those approaches. Embodiments of the invention address this and other needs both individually and collectively.